package com.example.work.euums;

public enum ITResourceType {
    // 每个枚举项用逗号分隔，最后一项不加逗号
    SERVER("物理机（裸金属）虚拟机", "服务器", "0101"),
    DATABASE("数据库", "数据库系统", "0702"),
    ROUTER("路由器", "路由器", "0102"),
    FIREWALL("防火墙", "防火墙", "0201"),
    SWITCH("交换机", "交换机", "0103"),
    LOAD_BALANCER("负载均衡", "负载均衡设备", "0106"),
    MIDDLEWARE("中间件", "中间件", "0703"),
    SCM_SYSTEM("供应链管理系统", "供应链管理系统（SCM）", "0606"),
    WEB("Web", "其他应用软件（含自研和第三方开放）", "0699"),
    STORAGE_DEVICE("网络产品/存储设备", "存储设备", "0105"),
    TELECOM_OTHER("电信设备/其他电信设备", "其他电信设备", "0399"),
    OS("基础软件/操作系统", "操作系统", "0701"),
    BASIC_SOFTWARE("基础软件/其他基础软件", "其他基础软件", "0799"),
    ANTI_DDOS("抗DDOS攻击产品", "抗DDOS攻击产品", "0207"),
    BAO_TI_JI("堡垒机", "堡垒机", "0223"),
    DEVELOPMENT_FRAMEWORK("开发框架", "开发框架", "0704"),
    VIRTUAL_MACHINE("虚拟机", "虚拟机", "0802");

    // 私有成员变量（对应三个属性）
    private final String abbreviation;   // 简称
    private final String fullName;       // 全称
    private final String code;          // 编码（可能为null）

    /**
     * 构造函数：初始化所有字段
     * @param abbreviation 简称
     * @param fullName     全称
     * @param code         编码（允许传null）
     */
    private ITResourceType(String abbreviation, String fullName, String code) {
        this.abbreviation = abbreviation;
        this.fullName = fullName;
        this.code = code;
    }

    // Getter方法：供外部读取数据
    public String getAbbreviation() {
        return abbreviation;
    }

    public String getFullName() {
        return fullName;
    }

    public String getCode() {
        return code;
    }
    public static String getCodeByTypeName(String code) {
        for (ITResourceType type : ITResourceType.values()) {
            if (type.getCode().equals(code)) {
                return type.getCode().substring(0, 2);
            }
        }
        return null;
    }

}
